/**
 * Klasse Employee klasse tbv. kantine simulatie, welke werknemers definiëerd
 * @author (Stephan Veenstra, Michel Jansma) 
 * @version (1.8)
 */

public class Employee extends Person {

    //Instantie variabelen definiëren van het type int
    private int number;
    //Instantie variabelen definiëren van het type boolean
    private boolean able;

    /**
     * @method Employee
     * @params null
     * @info   Constructor van Student class, welke geen parameters meekrijgt
     * @return null
     */
    public Employee() {
        //Call to super class
        super(307030, "Lina", "Laurens", 'V', new int[]{ 2, 7, 1980 });
        //Initialiseer instantie variabele number
        this.setEmployeeNumber(877);
        //Initialiseer instantie variabele able
        this.setCheckoutAble(true);
    }

    /**
     * @method Employee
     * @params <int> BSN, <String> firstname, <String> lastname, <char> gender, <int[]> dateOfBirth
     * @info   Overloaded constructor van Student class
     * @return null
     */
    public Employee(int BSN, String firstname, String lastname, char gender, int[]dateOfBirth, int number, boolean able) {
        //Call to super class
        super(BSN, firstname, lastname, gender, dateOfBirth);
        //Initialiseer instantie variabele number
        this.setEmployeeNumber(number);
        //Initialiseer instantie variabele able
        this.setCheckoutAble(able);
    }
    
    /**
     * SETTER METHODES
     */
    
    /**
     * @method setEmployeeNumber
     * @params <int> number
     * @info   Initialiseer instantie variabele number
     * @return null
     */
    public void setEmployeeNumber(int number) {
        this.number = number;
    }
    
    /**
     * @method setCheckoutAble
     * @params <boolean> able
     * @info   Initialiseer instantie variabele able
     * @return null
     */
    public void setCheckoutAble(boolean able) {
        this.able = able;
    }
    
    /**
     * GETTER METHODES
     */
    
    /**
     * @method getEmployeeNumber
     * @params null
     * @info   Retourneer instantie variabele number
     * @return <int> number
     */
    public int getEmployeeNumber() {
        return this.number;
    }
    
    /**
     * @method getCheckoutAble
     * @params null
     * @info   Retourneer instantie variabele able
     * @return <boolean> able
     */
    public boolean getCheckoutAble() {
        return this.able;
    }
    
    /**
     * @method getData
     * @params null
     * @info   Toon specifieke medewerker data
     * @return null
     */
    @Override
    public void getData() {
        //Toon specifieke medewerker data
        System.out.println(
            "M.Nummer     : " + this.getEmployeeNumber() + "\n" +
            "Kassabevoegd : " + this.getCheckoutAble()
        );
    } 
}
